package cn.twh.wall.beetl.tag;

import org.apache.log4j.Logger;
import org.beetl.core.exception.BeetlException;
import org.beetl.ext.tag.IncludeTag;

/**
 * include 某个文件，如果模板存在则引入，不存在则使用默认的。【默认的不存在则抛出异常】
 * 父类参数 ： 1：模板名称 2： 额外参数 
 * 本类增加参数 ： 3： 默认模板
 * 不满足3参数时与原始include一致
 * @author TWH
 *
 */
public class IncludeWithDefaultTag extends IncludeTag {
	private static final Logger logger = Logger.getLogger(IncludeWithDefaultTag.class);
	@Override
	public void render() {
		if(this.args.length==3) {
			Object useDefault = this.args[2];
			this.args=new Object[] {this.args[0],this.args[1]};
			try{
				super.render();
			}catch(BeetlException e) {
				if(useDefault.equals(this.args[0])) {
					throw e;
				}else {
					if(BeetlException.TEMPLATE_LOAD_ERROR.equals(e.detailCode)) {
						this.args[0]=useDefault;
						super.render();
					}else {
						throw e;
					}
				}
			}
		}else {
			super.render();
		}
	}
}
